package com.horsen.service.edu.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.horsen.service.base.model.VO.WebCourseOrderVO;
import com.horsen.service.edu.model.Course;
import com.horsen.service.edu.model.VO.CourseChartVO;
import com.horsen.service.edu.model.VO.CourseListVO;
import com.horsen.service.edu.model.VO.CoursePublishVO;
import com.horsen.service.edu.model.VO.WebCourseInfoVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 课程 Mapper接口
 *
 * @author Horsen
 */
@Repository
public interface CourseMapper extends BaseMapper<Course> {
    /**
     * 多表查询的分页查询
     *
     * @param pageParam    分页参数
     * @param queryWrapper 条件构造器
     * @return 课程列表VO
     */
    List<CourseListVO> selectPageWithMultiTable(
            Page<CourseListVO> pageParam,
            @Param(Constants.WRAPPER) QueryWrapper<Course> queryWrapper);

    /**
     * 根据ID获取一个CoursePublishVO
     *
     * @param id 课程ID
     * @return CoursePublishVO
     */
    CoursePublishVO selectPublishById(@Param("id") String id);

    /**
     * 根据ID获取一个WebCourseInfoVO
     *
     * @param id 课程ID
     * @return WebCourseInfoVO
     */
    WebCourseInfoVO selectWebInfoById(@Param("id") String id);

    /**
     * 根据ID获取一个课程订单VO
     *
     * @param id 课程ID
     * @retuen 课程订单VO
     */
    WebCourseOrderVO getCourseOrderById(String id);

    /**
     * 获取课程柱状图数据
     *
     * @return 课程柱状图VO
     */
    List<CourseChartVO> getChartValue();
}
